<?php namespace Admin\Model;

use Hdphp\Model\Model;

class Goods extends Model{

	//数据表
	protected $table = "shop_goods";

	//完整表名
	protected $full = false;

	//自动验证
	protected $validate=array(
		//字段名: 表单字段名
		//验证方法: 函数或模型方法
		//验证条件: 1有字段时验证(默认)	2值不为空时验证  	3必须验证 
		//验证时间: 1 插入时验证		2更新时空时验证 	3全部情况验证 (默认)
		//array('字段名','验证方法','提示信息',验证条件,验证时间),
		array('goods_name','required','商品名称不能为空',3,3),
	);

	//自动完成
	protected $auto=array(
		//字段名: 表单字段名
		//处理方法: 函数或模型方法
		//方法类型: string(字符串 默认)  function(函数)  method(模型方法)
		//验证条件: 1有字段时处理(默认)	2值不为空时 3必须处理
		//处理时间: 1 插入时  2更新时 3全部情况 (默认)
		//array('字段名','处理方法','方法类型',验证条件,验证时间),
		array('create_at','time','function',3,1),
		array('admin_id','getAdminId','method',3,1),
		array('list_pic','getListPic','method',3,3),
		array('thumb_pic','getThumbPic','method',3,3),
		
	);
	
	//自动完成 获得商品管理员Id
	public function getAdminId()
	{
		return $_SESSION['admin_id'];
	}
	
	//自动完成 获得商品列表图片
	public function getListPic()
	{
		//如果有上传文件 那么返回文件的路径	
		if($file = Upload::make('list_pic')){
			return $file[0]['path'];
		}
		
		return Q('post.list_pic','');
	}
	
	//自动完成 获得商品的缩略图
	public function getThumbPic()
	{
		if($file = Upload::make('thumb_pic')){
			return $file[0]['path'];
		}
		
		return Q('post.thumb_pic','');
	}

	//获得所有的商品列表
	public function getAll($cat_id='')
	{
		if($cat_id){
			$page = Page::row(4)->make($this->where('cat_id',$cat_id)->count());
			$data = Db::table('shop_goods g')->where('c.cat_id',$cat_id)->limit(Page::limit())->join('shop_cat c','g.cat_id','=','c.cat_id')->get();
		}else{
			$page = Page::row(10)->make($this->count());
			$data = Db::table('shop_goods g')->limit(Page::limit())->join('shop_cat c','g.cat_id','=','c.cat_id')->get();
		}
		
		return array('data'=>$data,'page'=>$page);
		
	}
	
	//添加商品
	public function store()
	{
		
		if($this->create()){
			if($goods_id = $this->add()){
				//图集处理
				$pics = new \Admin\Model\Pics;
				$pics -> store($goods_id);
				
				//商品属性处理
				$goodsAttr = new \Admin\Model\GoodsAttr;
				$goodsAttr->addGoodsAttr($goods_id);
			}
			return true;
		}
	}
	
	//删除列表
	public function del($id)
	{
		p($id);die;
		if($this->delete($id)){
			return true;
		}else{
			$this->error('删除失败');
		}
	}
	
	//修改商品
	public function edit()
	{
		if($this->create()){
			if($this->save()){
				//图集处理
				$pics = new \Admin\Model\Pics;
				$pics -> store($_POST['goods_id']);
				
			}
			return true;
		}
	}
	
	//通过id获取指定的商品
	public function one($goods_id)
	{
		return $this->find($goods_id);
	}
	
	//根据选择的类型获取商品的属性列表
	public function getAttrList($type_id)
	{
		//获得所有属性	
		$attrs = Db::table('shop_attr')->orderBy('orderby','ASC')->where('shop_type_id',$type_id)->get();
		
		$html = '';
		
		ji
		
		foreach ($attrs as $a) {
			
			//规格属性时添加“加价”表单
			switch($a['attr_type']){
				
				case 1;
				//普通属性
				$priceField = '<input type="hidden" name="add_price[]" value="0">';
				break;
				//规格属性
				case 2;
					 
				$priceField = '<label class="jia_01">加价:</label>
					<div class="col-md-1">
						<input type="text" name="add_price[]" class="form-control" placeholder="">
					</div>
					<span class="fa fa-plus-square-o" style="font-size:30px;margin-top:2px;cursor:pointer"></span>';
				break;
			}	
				
				//组合属性的html表单
				switch ($a['show_type']) {
					case 1:
						#文本框
						$field =<<<php
						<div class="form-group">
							<label class="col-sm-2 control-label">{$a['attr_name']}</label>
							<div class="col-sm-4">
								<input type="hidden" name="attr_id[]" value="{$a['attr_id']}">
								<input type="text" name="attr_value[]" class="form-control" />
								$priceField
							</div>
						</div>
php;
						break;
					
					case 2;
						#列表框
						$attrValue = preg_split('@\n@', $a['attr_value']);
						$options="";
						foreach ($attrValue as $opt) {
							$options.='<option value="'.$opt.'">'.$opt.'</option>';
						}
						$field =<<<php
						<div class="form-group">
							<label class="col-sm-2 control-label">{$a['attr_name']}:</label>
							<div class="col-md-2">
								<input type="hidden" name="attr_id[]" value="{$a['attr_id']}" />
								<select name="attr_value[]" class="form-control">
									{$options}
								</select>
							</div>
							$priceField
						</div>
php;
					break;
				}
			$html.=$field;			
		}
			
		return $html;
	}
}



